package com.lyy.extend_study;


/**
 * @Author:  GZQ
 * @date:  2024/11/13 21:42
 * @description: 继承使用细节:

 * 1.子类继承了所有的方法和属性，非私有的属性和方法可以在子类直接访问,
 *   但是私有属性不能在子类直接访问,要通过公共的方法去访问。

 * 2.子类必须调用父类的构造器, 完成父类的初始化。

 * 3.当创建子类对象时, 不管使用子类的那个构造器, 默认情况下总会调用父类的无参构造器,
 *   如果父类没有无参构造器, 则必须在子类的构造器中用super去指定, 使用父类的那个构造器
 *   完成对父类的初始化工作, 否则, 编译不会通过。

 * 4. 如果希望指定去调用父类的某个构造器, 则显式的调用一下： super(参数列表)

 * 5. super 在使用时, 必须出现在构造器的第一行。 注意：super只能在构造器中使用。
 *
 * 6. super() 和 this() 都只能放在构造器第一行，因此这两个方法不能共存在一个构造器

 * 7. java 所有类都是 Object 类的子类, Object 是所有类的基类。

 * 8. 父类构造器的调用不限于直接父类！将一直往上追溯直到 Object 类(顶级父类)

 * 9. 子类最多只能继承一个父类(指直接继承), 即java中是单继承机制。
 *
 * 10. 不能滥用继承, 子类和父类之间必须满足is-a的逻辑关系。
 */

public class ExtendsDetail {
    public static void main(String[] args) {
        System.out.println("========第1个对象========");
        // 创建了子类对象 sub
        Sub sub = new Sub();
        System.out.println("========第2个对象========");
        // 创建了子类对象 sub2
        Sub sub2 = new Sub("jack");
        System.out.println("========第3个对象========");
        // 创建了子类对象 sub2
        Sub sub3 = new Sub("jack", 20);
//        sub.sayOk();
    }
}
